/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/**
 * Project  : WebQQCore
 * Package  : iqq.im
 * File     : QQClient.java
 * Author   : solosky < solosky772@qq.com >
 * Created  : 2012-7-31
 * License  : Apache License 2.0
 */
package iqq.mk;

import iqq.im.QQActionListener;
import iqq.im.bean.QQStatus;
import iqq.im.event.QQActionFuture;
import iqq.im.event.QQNotifyEvent;
import iqq.im.service.HttpService.ProxyType;


/**
 * QQ客户端接口
 *
 * @author solosky
 */
public interface MKClient {
    /**
     * <p>destroy.</p>
     */
    public void destroy();


	public QQActionFuture getMKRcode(QQActionListener qqActionListener);
	
	
	public QQActionFuture checkMKRCode(QQActionListener qqActionListener);

 
	public QQActionFuture getUserMainCardInfo(String descQQ,QQActionListener qqActionListener);
	public QQActionFuture getCardCollection(String descQQ, QQActionListener qqActionListener);
	public QQActionFuture getCardHonor(String descQQ,QQActionListener qqActionListener); 
	public QQActionFuture getCardUserThemeList(String themeId,QQActionListener qqActionListener); 
	 /**
     * <p>login.</p>
     *
     * @param status   a {@link iqq.im.bean.QQStatus} object.
     * @param listener a {@link iqq.im.QQActionListener} object.
     * @return a {@link iqq.im.event.QQActionFuture} object.
     */
    public QQActionFuture login(QQStatus status, QQActionListener listener);
    /**
     * <p>submitVerify.</p>
     *
     * @param code        a {@link java.lang.String} object.
     * @param verifyEvent a {@link iqq.im.event.QQNotifyEvent} object.
     */
    public void submitVerify(String code, QQNotifyEvent verifyEvent);
    
    
    
    /**
     * <p>isOnline.</p>
     *
     * @return a boolean.
     */
    public boolean isOnline();

    /**
     * <p>isLogining.</p>
     *
     * @return a boolean.
     */
    public boolean isLogining();
    
    /**
     * <p>setHttpUserAgent.</p>
     *
     * @param userAgent a {@link java.lang.String} object.
     */
    public void setHttpUserAgent(String userAgent);

    /**
     * <p>setHttpProxy.</p>
     *
     * @param proxyType         a {@link iqq.im.service.HttpService.ProxyType} object.
     * @param proxyHost         a {@link java.lang.String} object.
     * @param proxyPort         a int.
     * @param proxyAuthUser     a {@link java.lang.String} object.
     * @param proxyAuthPassword a {@link java.lang.String} object.
     */
    public void setHttpProxy(ProxyType proxyType, String proxyHost,
                             int proxyPort, String proxyAuthUser, String proxyAuthPassword);


}
